package pe.bf.extranet.web;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import pe.bf.domain.bean.Empresa;
import pe.bf.domain.bean.Perfil;
import pe.bf.domain.bean.Usuario;
import pe.bf.extranet.cliente.ClienteWS;
 
public class Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
 
    public Servlet() {
        super(); 
    }
 
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		doPost(request,response);
	}
	
	public boolean validarIntentos(HttpServletRequest re){
		Integer intento=0;
		if(re.getSession().getAttribute("intento")==null){
			 re.getSession().setAttribute("intento",1);
		}else{
			intento=(Integer)re.getSession().getAttribute("intento");
			re.getSession().setAttribute("intento",intento+1);
		}
		
		if(intento+1==3){
			return true;
		}
		return false;
	}
	
	public void iniciarSesion(HttpServletRequest re){
		if(re.getSession().getAttribute("pos1")==null){
			HttpSession session=re.getSession(true);
		}
	}

	public void generacionDeTeclado( HttpServletRequest request ){
		
		Random random=new Random();
		ArrayList pos=new ArrayList();
		int indice=0;
		boolean ramdonBol=false;
		while (!ramdonBol){
			if(indice==0 ){
				pos.add(random.nextInt(10));
				indice++;
			}else{
				Integer valor=random.nextInt(10);
				if(!pos.contains(valor)){
					pos.add(valor);
					indice++;
				}
			}
			 
			if(indice==10){
				ramdonBol=true;
			}
		} 
		request.getSession().setAttribute("pos1", pos.get(0));
		request.getSession().setAttribute("pos2", pos.get(1));
		request.getSession().setAttribute("pos3", pos.get(2));
		request.getSession().setAttribute("pos4", pos.get(3));
		request.getSession().setAttribute("pos5", pos.get(4));
		request.getSession().setAttribute("pos6", pos.get(5));
		request.getSession().setAttribute("pos7", pos.get(6));
		request.getSession().setAttribute("pos8", pos.get(7));
		request.getSession().setAttribute("pos9", pos.get(8));
		request.getSession().setAttribute("pos10", pos.get(9));
	} 
	
	
	public Usuario verificarUsuario(Usuario usuario){ 
		return ClienteWS.buscarUsuario(usuario);
	}
 
	public void bloquearUsuario(Usuario usuario){ 
		  usuario.setEstado("bloqueado");
		  ClienteWS.actualizarUsuario(usuario);
	}
 
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
		iniciarSesion(request);
		if(request.getParameter("accion")!=null && request.getParameter("accion").equals("login")){ 
			String txtRuc=request.getParameter("txtRuc");
			String txtUsu=request.getParameter("txtUsu");
			String txtCla=request.getParameter("txtCla");
			
			Usuario usuario=new Usuario();   
			usuario.setNrodocumento(txtUsu);
			usuario.setClave(txtCla);   
			usuario=verificarUsuario(usuario);
			if((usuario)!=null){
				if(usuario.getEstado().equals("bloqueado".toUpperCase())){
					request.setAttribute("error","Supero los intentos permitidos. Usuario bloqueado.");
					generacionDeTeclado(request); 
					request.getRequestDispatcher("index.jsp").forward(request, response); 
					return;
				}else if(usuario.getEstado().toUpperCase().equals("por_validar".toUpperCase())){
					request.getSession().setAttribute("usuarioBean",usuario); 
					System.out.println("perfiles " + usuario.getPerfilesString());
					request.getSession().setAttribute("perfiles",usuario.getPerfilesString());
					request.getRequestDispatcher("cambioClaveServlet").forward(request, response);
					return;
				}else{
					request.getSession().setAttribute("usuarioBean",usuario);  
					System.out.println("perfiles " + usuario.getPerfilesString());
					request.getSession().setAttribute("perfiles",usuario.getPerfilesString());
					request.getRequestDispatcher("principal.jsp").forward(request, response);
					return;
				}
			}else{ 
					request.setAttribute("error","Clave ingresada incorrecta.");
					generacionDeTeclado(request); 
					request.getRequestDispatcher("index.jsp").forward(request, response); 
					return;
			}
		}else{ 
			generacionDeTeclado(request);
			request.getRequestDispatcher("index.jsp").forward(request, response);
			return;
		}
		
	}

}
